package com.dmz.workflow.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dmz.workflow.base.BaseService;
import com.dmz.workflow.vo.FormInfoGroupVo;
import com.dmz.workflow.vo.ProcessSetupVo;
import com.echronos.commons.Result;
import com.dmz.workflow.entity.FormInfo;
import com.dmz.workflow.vo.FormInfoVo;

import java.util.List;

/**
 * 流程表单Service
 */
public interface FlowableFormService extends BaseService<FormInfo> {
    /**
     * 分页查询流程表单
     */
    IPage<FormInfoGroupVo> listProcess(String keyword, Integer endpoint);

    /**
     * 分页查询流程表单
     */
    List<String> queryValidProcessNames();

    /**
     * 根据表单id回显
     */
    Result<?> updateFormById(FormInfoVo formListVo);


    /**
     * 新增表单
     */
    Result<?> saveForm(FormInfoVo flowableForm);

    /**
     * 新增流程表设计
     */
    void updateFromSort(List<FormInfoVo> infoVos);

    /**
     * 根据流程定义id 批量删除流程
     */
    void removeFormByIds(List<String> processDefinitionIds);

    /**
     * 回显
     */
    ProcessSetupVo queryFormById(String processDefinitionId);

    /**
     * 查询当前公司有效的流程名
     *
     * @param companyId 公司ID
     * @return 当前公司下当前流程名的数量
     */
    int queryCurrentCompanyValidProcessName(Integer companyId, String formName, String processDefinitionId);

    /**
     * 根据流程定义ID查询表单信息
     *
     * @param processDefinitionId 流程定义ID
     * @return 表单信息
     */
    FormInfo queryFormInfoByProcessDefinitionId(String processDefinitionId);

    /**
     * 查询当前公司下所有可用的流程定义
     *
     * @param companyId 公司ID
     * @return 流程定义列表
     */
    List<FormInfo> queryCurrentCompanyAllProcesses(Integer companyId);

}
